package com.wbl.train.business.service;

import com.wbl.train.common.business.dto.ConfirmOrderDto;
import com.wbl.train.common.business.dto.SkTokenDto;
import com.wbl.train.common.business.entity.SkTokenEntity;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wbl.train.common.page.PageVo;

import java.time.LocalDate;

/**
 * 秒杀令牌 服务类
 * @author 王博纶
 * @since 2024-05-26
 */
public interface DailySkTokenService extends IService<SkTokenEntity> {

    /**
     * 查询秒杀令牌
     * @param skTokenDto 杀令牌DTO
     * @return 分页信息
     */
    PageVo<SkTokenEntity> querySKToken(SkTokenDto skTokenDto);

    /**
     * 新增秒杀令牌
     * @param skToken 秒杀令牌
     * @return 是否新增成功
     */
    boolean insertAndUpdateSKToken(SkTokenEntity skToken);

    /**
     * 生成某日所有车次的令牌余量
     * @param date 目标日期
     * @param trainCode 火车车次
     */
    void genDaily(LocalDate date,String trainCode);

    /**
     *
     * @param date 日期
     * @param trainCode 火车编码
     * @param memberId 当前登录的会员id
     * @param decreaseCount 准备扣减令牌数量
     * @return 令牌校验后的结果
     */
    boolean validSKToken(LocalDate date, String trainCode, Long memberId, int decreaseCount);

}
